<?php

declare(strict_types=1);

namespace app\extend;

use app\service\system\file\FileManage;
use owns\enum\FileEnum;
use PhpOffice\PhpSpreadsheet\IOFactory;

/**
 * excel 导入
 */
class ImportExcel
{
    private $tempfile;
    /**
     * 读取文件
     * @param object $file
     */
    public function check($file): void
    {
        //文件验证
        if (!$file->getOriginalName()) {
            tips('文件上传失败');
        }
        $exts = strtolower(strstr($file->getOriginalName(), '.'));
        if ($exts != ".xls" && $exts != ".xlsx") {
            tips('文件格式错误，请上传EXCEL文件');
        }
        if ($file->getSize() > 20 * 1048576) {
            tips('文件大小不能超过20M');
        }
        //文件保存
        $this->tempfile = make(FileManage::class)->localFileUrl($exts, FileEnum::TEMP)[0];
        if (!move_uploaded_file($file->getRealPath(), $this->tempfile)) {
            tips('导入失败');
        }
    }
    /**
     * 获取文件数据
     * @param string $fileName
     */
    public function getData($file): array
    {
        $this->check($file);
        //创建读取
        $reader = IOFactory::createReader('Xlsx');
        //打开文件、载入excel表格
        $spreadsheet = $reader->load($this->tempfile);
        //删除临时文件
        unlink($this->tempfile);
        //返回表格数据
        return $spreadsheet->getSheet(0)->toArray();
    }
}
